聽音樂先~
接續前一篇文章,做出一個實體後。
專案中
project_name/config/route.rb
這個檔案為設置路徑使用。
專案中,所有的實體資料儲存於DB中,簡單一點想,路徑就是告知電腦調動資料時,有哪些"管道"可以傳送。
設計上,modle名為為主幹道,有需要的額外管道就會在主幹道底下設置。
一樣,我們先用快速指令設定。
#project_name/config/route.rb
Rails.application.routes.draw do
resources :roles
end
書上或很多資料都會告知,這個寫法能直接做出8個路徑對應七個方法,這七個方法,就是REST風格中希望我們在資料調動上盡量遵照的。
命名使用model的複數。
我自己在路徑上的想法是,Route就是路徑名,但是路怎麼設計還是由Controller處理,我們告知電腦,我們要走哪條路,路名指向的是controllet給的方法,方法等於這條路上會把資料做什麼處理(action)。
這時已經可以先使用
$ rails server
#請偷懶打rails s即可
指令開啟伺服器。
而瀏覽器理所當然因為沒有controller會出錯。
uninitialized constant RolesController
一樣以指令快速建立controller,請記得建立controller時名稱與model的名稱"複數處理",所以在命名上盡量以英文文法中有複數的單字處理較方便。
$ rails g controller roles
一樣觀察Rails會自動幫忙建立一些檔案及資料匣,比較特別的可以發現view資料匣與controller聯動。
先看看controller的檔案,如下。
#app >controllers > roles_controller.rb
class RolesController < ApplicationController
end
這時可以回網頁畫面,輸入
http://localhost:3000/roles
沒更改預設port的話都是3000。
基本上應該也還是一堆紅字出現
Unknown action
The action 'index' could not be found for RolesController
回到controller
#app >controllers > roles_controller.rb
class RolesController < ApplicationController
def index
end
end
對伺服器重整後,應該出現以下警訊。
No template for interactive request
RolesController#index is missing a template for request formats: text/html
是的,沒有view。那我們繼續做view。
請於app/views/roles再新增檔案index.html.erb。
可以新增index.html也可以,但初學且既然我們是用Rails,請就是記得加erb。
可於html中輸入ruby語法的檔案。
檔案中可以輸入任何你會的中英文或html。
重整瀏覽器,畫面就會出現你輸入的內容。
接著我們回到一下Rails的console,直接操作後台建立一個實體並存檔。
$ rails c
輸入
2.7.3 :001 > player = Role.create!
(0.7ms) SELECT sqlite_version(*)
TRANSACTION (0.1ms) begin transaction
Role Create (0.7ms) INSERT INTO "roles" ("created_at", "updated_at") VALUES (?, ?) [["created_at", "2021-08-12 12:49:56.795342"], ["updated_at", "2021-08-12 12:49:56.795342"]]
TRANSACTION (0.8ms) commit transaction
=> #<Role id: 3, created_at: "2021-08-12 12:49:56.795342000 +0000", updated_at: "2021-08...
完成後可輸入
2.7.3 :002 > Role.all
確認有無完成。
再回到controller。
class RolesController < ApplicationController
def index
@roles = Role.all
end
end
更改view內容
<h1><%= @roles %></h1>
回到瀏覽器後就會發現你建立的實體被真正調閱出來了。
可以發現,我們調動實體資料時,如果沒有特別做處理,其實是調動一整個記憶體給你。
多輸入以下觀察。
<h1><%= @roles.first.id %></h1>
<h1><%= @roles.first.created_at %></h1>
first是ruby本來就有的語法。
id與created_at是之前建立資料表,資料庫本身就有的,所以資料的名稱也等於一個實體方法。(呼叫資料的值)
<% %>與<%= %>是erb檔案才能輸入的,是讓view在指定區塊執行ruby語法,有沒有=符號,代表要不要顯示出來,如果不理解,請先記憶,如果我們要"看到"資料,請用<%= %>。
出現這三個字,代表前面的都可以不用看,科科
Rails的架構是MVC架構。
Rails中的model還包含了DB要注意,所以對資料庫操作熟練,model的部分才能展現的更好。Ruby語法熟練才能讓資料庫(類別)設計上更靈活。
Rails中的controller與view黏合得更近。controller包含了route要注意,語法熟練可以讓人與電腦間的溝通管道更順暢。view雖然感覺上較看重前端技能,但是不熟悉model與controller可以給予什麼資料,空有外殼沒有正確內容是沒有用的。
混打字數的一篇..
還是沒想到怎麼介紹Rails...